﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using LibreriaDeClases;

namespace BattleCity
{
    public abstract class ObjetoActivo : Objeto
    {
        //Atributos
        protected int Velocidad { get; set; }
        override public IDireccion Direccion
        {
            get
            {
                return DireccionAvanzar();
            }
        }
        //Metodos Abstractos
        abstract protected IDireccion DireccionAvanzar();
        abstract protected IDireccion DireccionRetroceder();

        //Metodos
        //Mueve el objeto una posicion para el lado que indique el metodo DireccionAvanzar()
        protected void Avanzar()
        {
            if (DireccionAvanzar().EsArriba())
            {
                Figura.MoverArriba();
            }
            else if (DireccionAvanzar().EsDerecha())
            {
                Figura.MoverDerecha();
            }
            else if (DireccionAvanzar().EsAbajo())
            {
                Figura.MoverAbajo();
            }
            else if (DireccionAvanzar().EsIzquierda())
            {
                Figura.MoverIzquierda();
            }
        }
        //Mueve el objeto una posicion para el lado que indique el metodo DireccionRetroceder()
        protected void Retroceder()
        {
            IDireccion direccionAux = DireccionRetroceder();
            if (direccionAux.EsArriba())
            {
                Figura.MoverArriba();
            }
            else if (direccionAux.EsDerecha())
            {
                Figura.MoverDerecha();
            }
            else if (direccionAux.EsAbajo())
            {
                Figura.MoverAbajo();
            }
            else if (direccionAux.EsIzquierda())
            {
                Figura.MoverIzquierda();
            }
        }
    }
}
